Perl 5.16.0

Posté par  (site web personnel, Mastodon) . Édité par baud123, B16F4RV4RD1N et claudex. Modéré par baud123. Licence CC By‑SA.
Étiquettes :
27
24
mai
2012
Perl

Imperturbable et quasiment un an jour pour jour après la publication de la version 5.14, Perl vient de sortir en version 5.16.0. Rappelons que Perl, créé en 1987 par Larry Wall, est un langage interprété, polyvalent, et particulièrement adapté au traitement et à la manipulation de fichiers texte, le tout sous double licence GPLv2 et Artistic.

Je vous invite à consulter le perldelta de la 5.16.0 pour la liste détaillée des changements.

Nouveautés et améliorations
Perl 5.16 préserve la compatibilité ascendante dans ses nouveautés et améliorations notables :

  • La déclaration de version use a été retravaillée et désactive un ancien "bundle" de fonctionnalités avant d'en activer une nouvelle ;
  • un opérateur eval plus cohérent au niveau de l'encodage ;
  • une fonction substr complètement rénovée ;
  • un nouveau token __SUB__ référençant la sous-routine actuelle afin de faciliter la mise en œuvre de la récursivité ;
  • Toujours plus d'améliorations sur la prise en charge d'Unicode 6.1 ;
  • Ajouts dans le debugger (nouvelles commandes enable et disable pour les breakpoints, nouvelles options dans les commandes de trace t et de breakpoints b, etc.)
  • etc.

Statistiques
Selon l'équipe de développement, côté statistiques, cette version de Perl implique des changements au niveau d'environ 590 000 lignes dans 2 500 fichiers par 139 auteurs !

Feuille de route
Pas de surprise, la prochaine version mineure, Perl 5.16.1, corrigeant les bugs importants de cette version est attendue autour du 20 juin prochain. La branche de développement 5.17, prélude à la prochaine version majeure 5.18 prévue en mai 2013 (là aussi sans surprise), devrait être ouverte dans la foulée de la 5.16.1 avec des sorties tous les 20 du mois (toujours pas de surprise).

Le perldelta, toujours lui, nous apprend aussi qu'un certain nombre de modules devraient être dépréciées et ne plus être distribués avec Perl par défaut (mais ils seront toujours accessibles via le CPAN). On parle de CPANPLUS, Filter::Simple, PerlIO::mmap, Pod::LaTeX, Pod::Parser, SelfLoader, Text::Soundex et Thread.pm. Parmi les plates-formes qui n'ont plus de développeur et qui devraient être abandonnées dès la phase de développement 5.17, il y a BeOS et djgpp parmi les plus connus, mais aussi dgux, EPOC, MPE/iX, Rhapsody, UTS, ou encore VM/ESA.

Aller plus loin

  • # Frozen Bubble

    Posté par  . Évalué à 2.

    L'occasion de se rappeler que Perl permet aussi de programmer des jeux : frozen-bubble est en Perl intégral.

    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

  • # Nouveautés

    Posté par  . Évalué à 4.

    La version 5.10 et 5.12 ou 5.14 avaient apportés de grosses nouveautés (given/when, say, etc), il n'y a pas eu dans cette version de backport depuis Perl6.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Nouveautés

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 24 mai 2012 à 11:39.

      Il me semble que c'est plus un travail de fond :

      • modularisation du coeur de Perl
      • passage en UNICODE

      L'objectif me semble clairement le long terme. L'avantage est de pouvoir ajouter des choses de manière plus modulaire donc moins risquée et plus stable. Les ajouts venant de Perl6 ne sont pas tous géniaux (j'ai lus plein de truc comme quoi l'opération ~~ était mal définis par exemple, il me semble que "given" pose aussi des soucis…).

      Bref, une base solide pour la suite ;-)

      • [^] # Re: Nouveautés

        Posté par  . Évalué à 2.

        L'objectif me semble clairement le long terme. L'avantage est de pouvoir ajouter des choses de manière plus modulaire donc moins risquée et plus stable.

        Je comprends bien. C'est juste qu'en tant que grand enfant devant mon jouet, j'ai tendance à vouloir être surpris et émerveillé par celui-ci :)

        Les ajouts venant de Perl6 ne sont pas tous géniaux (j'ai lus plein de truc comme quoi l'opération ~~ était mal définis par exemple, il me semble que "given" pose aussi des soucis…).

        Oui leur implémentation en perl5 n'est pas aussi bien faite qu'en Perl6 (logique).

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # Perl 6

    Posté par  (site web personnel) . Évalué à 6.

    Et Perl 6, c'en est où ? Visiblement, ce projet lancé il y a quelque chose comme douze ans n'intéresse pas grand monde vu l'absence de nouvelles à ce sujet, mais savez-vous si c'est :

    • sorti et utilisable ;
    • pas encore fini ;
    • mort ?
    • [^] # Re: Perl 6

      Posté par  (site web personnel) . Évalué à 2.

      • maintenu, comme PHP6, à l'aide du gestionnaire de version /dev/null ?
    • [^] # Re: Perl 6

      Posté par  . Évalué à 5.

      Ça avance à son rythme, vu le nombre développeurs.

      Pour le compilo le plus avancé à l'heure actuelle voir ici: http://rakudo.org/

      Il y a une pseudo roadmap ici: ClickMe

      Rakudo est utilisable à l'heure actuelle ( Pas en prod … faut pas rêver! ).
      Sa lenteur reste un gros problème, qui se résorbe néanmoins à chaque release.

      Je suit un peu (de loin) son évolution, ça a tendance à se bonifier release en release, donc: wait and see (and code).
      Bref, c'est cool à regarder "pousser" d'autant plus que les membres du projet sont sympas et pas prise de tête.

      Ha ! L'informatique en sandales :)

      • [^] # Re: Perl 6

        Posté par  . Évalué à 7.

        Rakudo est utilisable à l'heure actuelle ( Pas en prod … faut pas rêver! ).
        Sa lenteur reste un gros problème, qui se résorbe néanmoins à chaque release.

        Sachant que depuis janvier ils sortent une version par mois.

        Je crois que le projet est vraiment bien avancé, ils se concentrent sur les corrections de bug et amélioration de performance. Donc pour les « early adopters » c'est maintenant.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Perl 6

      Posté par  . Évalué à 1.

      Même s'ils portent des nom similaire, Perl6 est tellement éloigné de Perl que je les considère simplement comme des langage différents.

      Je serais donc d'avis de ne plus lancer les troll Perl6 sur des dépêches Perl….

      • [^] # Re: Perl 6

        Posté par  . Évalué à 4.

        Je ne comprends vraiment pas ça. De ce que j'en ai vu Perl6 c'est du perl en mieux, d'ailleurs des fonctionnalités de perl6 ont étaient backportées dans perl5.

        J'ai l'impression que cette idée que perl6 n'est pas le même langage est juste pour contrer les trolls sur le temps qu'il met à sortir.

        Personnellement je m'en fou qu'il mettent du temps à sortir, on a déjà de quoi s'amuser avec Perl5 pourquoi languir perl6 ? Il sera mieux mais autant essayer de ne pas se prendre des insultes comme se sont joyeusement pris les développeurs de KDE et de Gnome en sortant quelque chose de mal fini, non ?

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Perl 6

          Posté par  . Évalué à 3.

          Je ne comprends vraiment pas ça. De ce que j'en ai vu Perl6 c'est du perl en mieux, d'ailleurs des fonctionnalités de perl6 ont étaient backportées dans perl5.

          J'ai l'impression que cette idée que perl6 n'est pas le même langage est juste pour contrer les trolls sur le temps qu'il met à sortir.

          Tout dépend de la perception de chacun. Pour moi, c'est un nouveau langage, inspiré de Perl5.
          Quelques exemples simples, extraits de Perl5 to Perl6 :

          my Int $x = 3;
          $x = "foo";         # error
          
          # Tableaux
          say "@array[1]";    # same sigil for array values
          my @c = @b.map({$_ * 2 });  # map is also a method, yes
          
          # Hashes
          my %drinks = France => 'Wine', USA => 'Coke';
          say "The people in France love ",  %drinks{'France'};
          say %drinks<Bavaria>;
          
          

          Des exemples plus complexes :

          Seq(3,8,[2,Seq(9,3)],8) >>->> (1,1,2,1); # Seq(2,7,[0,Seq(7,1)],7)
          1, 1, &[+] ... *       # fibonacci sequence (lazy infinite array)
          sort &[Rleg], @list    # reverse sort as strings
          
          
          • [^] # Re: Perl 6

            Posté par  . Évalué à 1.

            À noter : << et >> sont juste des équivalents ASCII pour « et ». Ainsi, le >>+>> peut se récrire plus joliment en »+».

  • # Lisibilité de Perl (je sais on est que Jeudi)

    Posté par  (site web personnel) . Évalué à 7.

    Bonjour,

    Je suis heureux de voir un langage comme Perl traverser les siècles :)
    Il s'agit du premier langage libre que j'ai mis en production, avec succès
    car certaines routines ont tenu de 1995 à 2010 sans aucunes modifications ! (je vous laisse calculer le nombre de version W$ :) )
    maintenant j'ai tout repris en python …
    Mais j'ai toujours un vieux serveur TCP qui sert des terminaux texte en exploitation
    et me fais râler a chaque modification (heureusement ca devient rare) il me faut au moins 2 jours pour re lire mon code (écrit en 2005) et 1/2 journée pour écrire la modification

    même si je suis passé de AIX 5.3 (perl 5.5 puis 5.8) à Centos (perl 5.10) avec comme unique modification le chemin de la socket MySQL !

    un exemple :

    @{$self->{NUMBO}}[$self->{BOBINE_MODIF}-1] = $bobine;

    Je dois vouloir modifier la valeur d'un élément de tableau contenu dans un objet …

    Aussi je demande aux amateurs de Perl si l’écriture Objet en perl est elle toujours aussi illisible ? ou c'est moi qui devrais revoir ma copie ?

    A+

    • [^] # Re: Lisibilité de Perl (je sais on est que Jeudi)

      Posté par  . Évalué à 0.

      Non, ça n'a HELAS presque pas changé, à moins d'utiliser le module Moose

      En fait, c'est la syntaxe objet qui m'a fait lentement quitter Perl (en dehors de la programmation système).

      Note:
      Perl6 corrige assez bien le OOM de Perl5 (Moose et P6 s'inspirant l'un de l'autre).

      • [^] # Re: Lisibilité de Perl (je sais on est que Jeudi)

        Posté par  . Évalué à 5.

        Non, ça n'a HELAS presque pas changé, à moins d'utiliser le module Moose

        C'est marrant. D'un coté on félicite perl pour maintenir une compatibilité ascendante importante (pour un langage dynamique), de l'autre on est pas content qu'il faille passer par un module pour bénéficier des nouveautés du langage.

        Sans être un élément central, modifier le modèle objet de base de perl aurait à mon avi de lourdes conséquence sur la compatibilité.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Lisibilité de Perl (je sais on est que Jeudi)

          Posté par  . Évalué à 3.

          Sans être un élément central, modifier le modèle objet de base de perl aurait à mon avi de lourdes conséquence sur la compatibilité.

          … voire même irréparables !

          C'est marrant. D'un coté on félicite perl pour maintenir une compatibilité ascendante importante (pour un langage dynamique), de l'autre on est pas content qu'il faille passer par un module pour bénéficier des nouveautés du langage.

          J'ai jamais eut à me plaindre de Perl5 !

          C'est juste une question d'emploi ensuite.
          Pour formater des logs, parser des fichiers pour export DB, faire des scripts de dépannage, bricoller un proxy, etc… Perl5 c'est plus qu'utile.

          Pour du Dev Web, OOM+Framework deviennent obligatoires: j'ai bien essayé de me mettre à Catalyst+Moose …
          Mais bon, même avec Moose ça reste à coucher dehors, bien loi du K.I.S.S … :(

        • [^] # Re: Lisibilité de Perl (je sais on est que Jeudi)

          Posté par  (site web personnel) . Évalué à 4.

          Tu as raison, on veut l'inverse et son contraire mais il s'agit en faite d'une geekerie
          ou d'un traumatisme neuronal profond …
          J'adorais coder en perl, simple, concis, puissant, permet de faire des choses incroyables
          en 2 lignes.
          C'est grace a Perl que j'ai VRAIMENT eu le declic sur la programmation objet
          (voir l'instruction bless ou vous pouvez bénir une variable …)
          J'ai réalisé plein de choses avec Perl et qui tourne depuis longtemps …
          Perl c'est super mangez en c'est bon pour ce que vous avez …
          Mais
          Mais
          Mais (il est la le traumatisme)
          Mais
          Relire son propre code après 6 mois … et on se pose des questions sur son état mental du moment …
          C'est illisible (vous pouvez me lancer les pierres virtuelles que vous voulez je n'en demordrais pas ) et donc difficile a maintenir et donc … pénible
          Perl m'a montré mes limites peut être …

          Merci pour la psychanalyse … je vous dois combien ?

          heureusement ya python ! lisible concis etc …

          Et pour conclure pour ceux qui continuent a coder en Perl sans passer par la case médicamenteuse qui calme … respect

          A+

    • [^] # Re: Lisibilité de Perl (je sais on est que Jeudi)

      Posté par  . Évalué à 2.

      @{$self->{NUMBO}}[$self->{BOBINE_MODIF}-1] = $bobine;

      ça s'écrit comme ça depuis très longtemps (au moins 10ans) :
      $self->{NUMBO}[$self->{BOBINE_MODIF}-1] = $bobine;

      sinon la version précédente a introduit des simplifications, comme celui là :
      avant : push @{$self->{NUMBO}}, $something;
      maintenant : push $self->{NUMBO}, $something;

      bien sûr on pouvait aussi utiliser une autre variable pour éviter le @{} :
      my $array=$self->{NUMBO}
      push @$array, $something;

  • # Et pour le web ?

    Posté par  . Évalué à 2.

    Avant d'attaquer le sujet, je tenais à dire que je voulais piquer le morceau de titre relatif au jeudi.

    Sinon, j'ai une vrai question. Qu'apporte de plus les langages python/ruby/php pour programmer du web, vu l’essor des techno autour du javascript ?
    Pourquoi peux de "bruit" sur le net sur la programmation web en perl ? Est-ce "seulement" les framework web (django/RoR/symphony) qui justifie cette absence ?

    • [^] # Re: Et pour le web ?

      Posté par  . Évalué à 2.

      Sinon, j'ai une vrai question. Qu'apporte de plus les langages python/ruby/php pour programmer du web, vu l’essor des techno autour du javascript ?

      A moins de d'utiliser APE ou autres, il sera toujours utile de scripter côté serveur.
      Toujours un question d'utilité, si tu as déjà la totalité de tes scripts serveur en $to_langage_de_dev tu va le guarder pour faire du web.

      Pourquoi peux de "bruit" sur le net sur la programmation web en perl ? Est-ce "seulement" les framework web (django/RoR/symphony) qui justifie cette absence ?

      Y'a des frameworks:
      * Dancer
      * Catalyst
      * Embperl

      Pour ceux que je connais et ai testé.

      Le problème pour Perl5 sur le web c'est l'explosion des MVC ses dernières années.
      Seul "Catalyst" a pût suivre dans le genre (cf post du dessus) mais au prix d'une complexité grandissante (trop à mon goût).

    • [^] # Re: Et pour le web ?

      Posté par  . Évalué à 1.

      Est-ce "seulement" les framework web (django/RoR/symphony) qui justifie cette absence ?

      Tu en a un paquet en perl aussi : catalyst, mojolicius, dancer, jifty,…

      Mais je ne sais pas ce qu'ils valent faces aux autres.

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Et pour le web ?

      Posté par  (site web personnel) . Évalué à 3.

      Pour les jeunes, le Perl est has-been… et donc les propos dessus sont rapidement tournés en dérision. C'est un peu pareil avec Fortran d'ailleurs ;-)

      Comme un post plus haut, on voit que l'idée qu'en Perl il faut construire ses objets à la main à la vie dure… Il y a tout plein de framework qui vont bien et qui sont clair.

      Je fais (rarement) du Python mais je préfère Perl. Dès que j'ai un module Perl, je fais un man sur celui-ci et j'ai une doc correcte la plupart du temps. Je ne retrouve pas cela avec Python. Idem avec php.

      Je me suis amusé à faire un petit programme utilisant la libcoro, c'est une manière de faire de l'asynchrone sans passer par l'usine à gaz POE, du pur bonheur.

      Bref, il y a aussi des effets de mode.

      • [^] # Re: Et pour le web ?

        Posté par  (site web personnel) . Évalué à 3.

        Nobody's Perfect !
        Perl et le CPAN et tout ses modules super documentés => GEANT
        C'est perl aussi qui a lancé la mode des livres style CookBook … Perl en Action
        a l'origine de PLEAC
        L'humour présent dans les livres ( extrait … "à réserver aux amateurs de soirées cuirs et chaînes" )

        Perl continue d'être un exemple a suivre

  • # Citation du jour

    Posté par  . Évalué à 10.

    Perl would be Voodoo – An incomprehensible series of arcane incantations that involve the blood of goats and permanently corrupt your soul. Often used when your boss requires you to do an urgent task at 21:00 on friday night.

    If programming languages where religions

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.